package mirrormonkey.rpc.tools.result.specs;

import mirrormonkey.framework.annotations.IdentityAware;
import mirrormonkey.rpc.RpcSpecification;
import mirrormonkey.rpc.annotations.RpcTarget;
import mirrormonkey.rpc.tools.result.entities.PositionRequestEntity;

import com.jme3.math.Vector3f;

public interface PositionRequestable extends RpcSpecification {

	@RpcTarget(responseTimeout = 5f, reliable = true)
	public Vector3f getLocalTranslation();

	@RpcTarget(responseTimeout = 5f, reliable = true)
	public Object returnNull();

	@RpcTarget(responseTimeout = 5f, reliable = true)
	public void throwSomeError(String expectMessage);

	@RpcTarget(responseTimeout = 0.1f, reliable = true)
	public void justReturn();

	@IdentityAware
	@RpcTarget(responseTimeout = 5f, reliable = false)
	public PositionRequestEntity returnThis();

	@IdentityAware
	@RpcTarget(responseTimeout = 5f, reliable = false)
	public PositionRequestable returnThisByInterface();

	@IdentityAware
	@RpcTarget(responseTimeout = 5f, reliable = false)
	public PositionRequestEntity returnUnknownEntity();

	@IdentityAware
	@RpcTarget(responseTimeout = 5f, reliable = false)
	public PositionRequestEntity returnIdAwareNull();
}
